home *** CD-ROM | disk | FTP | other *** search
- {nice Program/utility which can be used to check the 'sorted' File and the data
- File. It produces the Byte CheckSum of the Files (which must be identical), and
- can check the sortorder of the File (when given the option -s)...
- }
- {$A+,B-,D-,F-,G+,I-,L-,N-,O-,R-,S+,V-,X-}
- {$M 16384,0,655360}
- { Here is the Program CHECKSUM that you can run to check the master data
- File For TeeCee's String sorting contest. if you have a slow machine I
- suggest you set the Program running and go to bed!! :-)
-
- Code size: 5952 Bytes
- Data size: 924 Bytes
- .EXE size: 6304 Bytes
- }
- Uses Crt;
- Const
- Version = 'CheckSum 1.0 (c) 1992 DwarFools & Consultancy, '+
- 'by drs. Robert E. Swart'#13#10;
- Usage = 'Usage: CheckSum dataFile [-s]'#13#10 +
- ' Options: -s to check the sortorder of the Strings'#13#10;
- MaxStr = 30;
- Error: LongInt = 0;
- Records: LongInt = 0;
- CheckSum: Byte = 0; { Byte CheckSum of all Bytes in data File xor'ed }
- Sortorder: Boolean = False; { Assume option -s is not given }
-
- Var Str: String[MaxStr];
- len: Byte Absolute Str;
- ByteStr: Array[0..MaxStr] of Byte Absolute Str;
- PrevStr,UpperStr: String[MaxStr];
- f: File;
- i: Integer;
-
- begin
- Writeln(Version);
- if ParamCount = 0 then
- begin
- Writeln(Usage);
- Halt
- end;
-
- assign(f,ParamStr(1)); { Change this to your chosen File name }
- reset(f,1);
- if Ioresult <> 0 then
- begin
- Writeln('Error: could not open ',ParamStr(1));
- Writeln(Usage);
- Halt(1)
- end;
-
- if (ParamCount = 2) and
- ((ParamStr(2) = '-s') or (ParamStr(2) = '-S')) then Sortorder := True;
-
- Writeln('Strings x 1000 checked:');
- While not eof(f) do
- begin
- BlockRead(f,len,1);
- BlockRead(f,Str[1],len);
- For i:=0 to len do CheckSum := CheckSum xor ByteStr[i];
- if Sortorder then
- begin
- UpperStr[0] := Str[0];
- For i:=1 to len do UpperStr[i] := UpCase(Str[i]);
- if Records > 0 then
- begin
- if PrevStr > UpperStr then
- begin
- Inc(Error);
- Writeln;
- Writeln('Error: ',PrevStr,' > ',UpperStr);
- end;
- PrevStr := UpperStr
- end
- end;
- Inc(Records);
- if (Records mod 1000) = 0 then
- begin
- GotoXY(1,WhereY);
- Write(Records div 1000:3);
- end
- end;
- close(f);
- Writeln;
- Write(Records,' Strings checked, ');
- if Sortorder then Writeln(Error,' Errors found, ');
- Writeln('Byte CheckSum = ',CheckSum)
- end.